<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
	<head>
		<title>Parallelization experiments</title>
		<meta content="text/html; charset=iso-8859-7" http-equiv="Content-Type">
	</head>
	<body>
	
		<center><h2>Intoduction</h2></center>
		
		<h3>Background</h3>

		<p> <!-- Parallel hardware has become widespread nowadays  -->
		Parallelized computer hardware is becoming increasingly widespread nowadays. Not only the affordable PCs with multi-core CPUs have already become commonplace, but also other modern programmable devices, like game-consoles, smart-phones, tablets, etc, tend to offer parallel execution capabilities as well.
		</p>
		
		<p> <!-- Non-parallel software has become inferior -->
		However, much of the processing power that the modern parallel hardware has to offer, cannot be exploited by the non-parallel software entities, like non-parallel programs, libraries, algorithms, etc. For instance, when a non-parallel program runs on a 6-core PC, it can only use the one out of the six available CPU cores, which corresponds to less than 17% of the total processing power. This can be an severe drawback, in the case when a non-parallel software performs CPU intensive operations and depends a lot on the CPU processing power. Nowadays, non-parallel software entities frequently appear inferior in terms of performance when compared to parallelized counterparts, even on a typical hardware configuration.
		</p>
		
	<hr/>
		
		<h3>Parallelization experiments rationale</h3>

		<p> <!-- There are still excellent opportunities for improving the non-parallel software -->
		In my opinion, the performance inferiority of the non-parallel software in the modern world of parallelized computer hardware, is neither fatal nor irreversible. I firmly believe that there are still excellent opportunities for achieving great performance improvements in existent non-parallel software, particularly in cases when the CPU is being used intensively. This can be done by selectively and carefully parallelizing some crucial parts of the target software, in which case I believe that it can be quite feasible to achieve significant performance improvements, with moderate cost and small risk of damaging the software functionality.
		</p>
		
		<p> <!-- Rationale for performing these experiments -->
		Consequently, it seemed to me very interesting to test in practice how well this parallelization process can actually work, by performing some parallelization experiments, in which I am trying to parallelize non-parallel, open-source software. I also expect that, these parallelization experiments will help me a lot to acquire more knowledge and experience about the parallelization of existent software, its difficulties and peculiarities.
		</p>
		 
	<hr/>
	
		<h3>Repository rationale</h3>
		
		<p> <!-- Rationale for creating this repository -->
		The very same reasons that made me very interested in the parallelization of existent software, make me also believe that other software developers may think the same way as well and they will probably find my experiments interesting and even useful for them. Consequently, in order to make this experimental work as useful and helpful as possible, I have placed in this publicly accessible repository all the material needed for reproducing, verifying and reusing my work.
		</p>
		
		<!-- Potential benefits for fellow developers -->
		<p>I expect that the material of this repository can be beneficial and helpful to fellow software developers in several practical ways:</p>
		
		<ul>
			<li>Repository material which helps in parallelizing open-source software, can be incorporated to the corresponding open-source projects, in order to achieve real-world performance improvements in practice.</li>
			<li>The repository material can provide vicarious experience, regarding the parallelization of existent software, to the software developers who will care to study it.</li>
			<li>The repository material can be extended and evolved in order to be used in other similar experiments.</li>
		</ul>
		
	</body>
</html>
